<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
        用js 实现 
        从接口中获取到了一个长度大于 20000 的数组，
        数组每个元素为一个对象如下所示:[{x:1,.....},{x:11,....},{x:11,.....},{x:1,.....},{x:111,......}]现在需要把属性x 的值相同的元素放在一个数组中 [{x:1,..},{x:1,..}],[{x:11,....},{x:11,....}]然后再把数组放入到一个二维数组中,
        并且根据 x 值的大小进行排序.返回如下格式的数组:
        [[{x:1,...},{x:1,...}],[{x:11,...},{x:11,...}],[{x:111,...},{x:111,...}],......]
        
        
        
        
        */

        var arr = [{ x: 4 },{ x: 1 }, { x: 4 },{ x: 2 }, { x: 1 }, { x: 11 }, { x: 2 }, { x: 11 }, { x: 111 }]
        // [[{x:1},{x:1}],[{x:2},{x:2}],[{x:11},{x:11}],[{x:111},{x:111}]]
        // {1:[{x:1},{x:1}],2:[],11:[],111:[]}
        function groupSort(arr) {
            var grouped = {}; // 存放分组后的结果 
            for (let obj of arr) {
                // obj是对象 
                if (!grouped[obj.x]) {
                    grouped[obj.x] = [];    // {1:[{x:1}]}
                }

                grouped[obj.x].push(obj)

            }

            // console.log(grouped);
            const res = Object.values(grouped);// 快速拿到所有对象的值
            console.log(res);
            //             [
            //     [
            //         {
            //             "x": 1
            //         },
            //         {
            //             "x": 1
            //         }
            //     ],
            //     [
            //         {
            //             "x": 2
            //         },
            //         {
            //             "x": 2
            //         }
            //     ],
            //     [
            //         {
            //             "x": 11
            //         },
            //         {
            //             "x": 11
            //         }
            //     ],
            //     [
            //         {
            //             "x": 111
            //         }
            //     ]
            // ]
            res.sort((a, b) => a[0].x - b[0].x)
            return res
        }

        groupSort(arr);

    </script>
</body>

</html>